﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Admin_Ajax_BaiThiAjax : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["Methods"] == null)
        {
            Response.Write("{\"Status\":\"Error\"}");
            Response.End();
        }

        switch (Request["Methods"])
        {
            case "ThemHocDeThi":
                ThemHocDeThi();
                break;
            case "XoaBaiThi":
                XoaBaiThi();
                break;
            case "KhoaBaiThi":
                KhoaBaiThi();
                break;
            case "XoaTatCaBaiThi":
                XoaTatCaBaiThi();
                break;
            case "GuiMatKhau":
                GuiMatKhau();
                break;
            default:
                break;
        }
    }

    public void ThemHocDeThi()
    {
        int MaDe = int.Parse(Request.Params["DeThi"]);
        int lop = int.Parse(Request.Params["Lop"]);
        string ngaythi = Request.Params["NgayThi"];

        if (MaDe <= 0 || lop <= 0)
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Không thể thêm dữ liệu!\"}");
            Response.End();
        }
        DeThiINFO mdethi = DeThiDAL.GetInfo(MaDe);
        if (mdethi == null || mdethi.MaDe ==0)
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Đề thi không có!\"}");
            Response.End();
        }
        List<BaiThiINFO> dsBaiThi = new List<BaiThiINFO>();
        DataTable dsHocVien = LopDAL.timkiem(lop);
        DateTime dNgayThi = DateTime.Parse(ngaythi);
        for (int i = 0; i < dsHocVien.Rows.Count; i++)
		{
            if (dsHocVien.Rows[i]["MaHV"].ToString().Equals("0"))
                continue;
            BaiThiINFO baithi = new BaiThiINFO();
            baithi.MaHV = int.Parse(dsHocVien.Rows[i]["MaHV"].ToString());
            baithi.MaDe = mdethi.MaDe;
            baithi.ThoiGianThi = mdethi.ThoiGianThi * 60;
            baithi.NgayThi = dNgayThi;
            baithi.ThoiGianBatDau = dNgayThi;
            baithi.ThoiGianKetThuc = dNgayThi;
            baithi.TinhTrang = 0;
            if (BaiThiDAL.KiemTraDeThiHocVien(baithi.MaHV,baithi.MaDe) >= 1){
                Response.Write("{\"Status\":\"Error\",\"Mess\":\"Có học viên đã thi đề này, vui lòng chọn đề khác!\"}");
                Response.End();
            }
            dsBaiThi.Add(baithi);
		}

        if (BaiThiDAL.ThemDanhSachThi(dsBaiThi) > 0)
        {
            BaiThiDAL.InsertDeThiLop(MaDe, lop);
            Response.Write("{\"Status\":\"Success\"}");
        }
        else
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Không thể thêm dữ liệu!\"}");
        }

        Response.End();
    }

    public void XoaBaiThi()
    {
        if (Request.Params["MaBaiThi"] == null || Request.Params["MaLop"] == null)
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Sai Thông Tin!\"}");
            Response.End();
        }
        int MaBaiThi = int.Parse(Request.Params["MaBaiThi"]);
        int MaLop = int.Parse(Request.Params["MaLop"]);
        BaiThiINFO mBaiThi = BaiThiDAL.getInfo(MaBaiThi);
        if (mBaiThi.TinhTrang > 1) {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Không thể xóa bài thi này!\"}");
            Response.End();   
        }
        DataTable dscur = BaiThiDAL.timkiem(MaLop,mBaiThi.MaDe);
        if (BaiThiDAL.Delete(MaBaiThi) > 0)
        {
            Response.Write("{\"Status\":\"Success\"}");
            if (dscur.Rows.Count == 1)
                BaiThiDAL.DeleteDeThiLop(mBaiThi.MaDe, MaLop);
        }
        else
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Không thể xóa bài thi!\"}");
        }

        Response.End();
    }

    public void KhoaBaiThi() {
        if (Request.Params["MaDe"] == null || Request.Params["MaLop"] == null)
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Sai Thông Tin!\"}");
            Response.End();
        }
        int MaDe = int.Parse(Request.Params["MaDe"]);
        int MaLop = int.Parse(Request.Params["MaLop"]);

        List<BaiThiINFO> dsBaiThi = BaiThiDAL.ListBaiThiLop(MaLop, MaDe);
        for (int i = 0; i < dsBaiThi.Count; i++)
		{
            if (dsBaiThi[i].TinhTrang == 0)
                dsBaiThi[i].TinhTrang = 4;
            if(dsBaiThi[i].TinhTrang == 2)
                dsBaiThi[i].TinhTrang = 3;
		}

        if (BaiThiDAL.KhoaBaiThi(dsBaiThi) > 0)
        {
            Response.Write("{\"Status\":\"Success\"}");
        }
        else
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Không thể xóa bài thi!\"}");
        }

        Response.End();
    }

    public void XoaTatCaBaiThi()
    {
        if (Request.Params["MaDe"] == null || Request.Params["MaLop"] == null)
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Sai Thông Tin!\"}");
            Response.End();
        }
        int MaDe = int.Parse(Request.Params["MaDe"]);
        int MaLop = int.Parse(Request.Params["MaLop"]);

        List<BaiThiINFO> dsBaiThi = BaiThiDAL.ListBaiThiLop(MaLop, MaDe);
        for (int i = 0; i < dsBaiThi.Count; i++)
        {
            if (dsBaiThi[i].TinhTrang > 0) {
                Response.Write("{\"Status\":\"Error\",\"Mess\":\"Đã có học viên làm bài, Không thể xóa tất cả bài thi!\"}");
                Response.End();
                return;
            }
        }

        if (BaiThiDAL.DeleteAll(dsBaiThi) > 0)
        {
            Response.Write("{\"Status\":\"Success\"}");
            BaiThiDAL.DeleteDeThiLop(MaDe, MaLop);
        }
        else
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Không thể xóa bài thi!\"}");
        }

        Response.End();
    }

    public void GuiMatKhau()
    {
        if (Request.Params["MaDe"] == null || Request.Params["MaLop"] == null)
        {
            Response.Write("{\"Status\":\"Error\",\"Mess\":\"Sai Thông Tin!\"}");
            Response.End();
        }
        int MaDe = int.Parse(Request.Params["MaDe"]);
        int MaLop = int.Parse(Request.Params["MaLop"]);

        List<HocVienINFO> dsHocVien = BaiThiDAL.ListHocVienThi(MaLop, MaDe);
        for (int i = 0; i < dsHocVien.Count; i++)
        {
            if (dsHocVien[i].MatKhau != "")
                continue;
            string matkhau = Guid.NewGuid().ToString().Substring(1, 8).Replace("-", "h");
            HocVienDAL.DoiMatKhau(matkhau,dsHocVien[i].MaHV);
        }

        Response.Write("{\"Status\":\"Success\"}");

        Response.End();
    }
}